package com.blog.dao.sys;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;

import com.blog.entity.sys.User;
 

 

 
/**
 *  #  #将传入的数据都当成一个字符串，会对自动传入的数据加一个双引号
 *  	#方式能够很大程度防止sql注入
 *  	#方式能够很大程度防止sql注入
 *  $   $将传入的数据直接显示生成在sql中
 *  	$方式一般用于传入数据库对象，例如传入表名.
 *
 */
@Mapper
public interface UserDao {
	
 
 
	@Select("select  id,username,password,phone,email,created,updated,openid from chb_user where id =#{userId}")
	User  findByID(@Param("userId") Long userId);

 
	Integer insertUser(User  userEntity);
	
	@Select("select  id,username,password,phone,email,created,updated,openid from chb_user where username =#{username}")
	User  findByUserName(@Param("username") String username);

	//这个方法是测试在java中 使用 xml方式  
//	@Select(UserSql2.USER_LIST_SQL)
//	List<User> listUser(@Param("username") String username,
//			@Param("phone") String phone,
//			@Param("page") Integer page,
//			@Param("pageSize") Integer pageSize);
	
//	@SelectProvider(type=UserSql.class,method="selectListUser")  
//	List<User> listUser2(Map<String,Object> m);
//	

//	@SelectProvider(type=UserSql.class,method="countListUser")
//	Integer countUser(Map<String,Object> m);
//	
	
	@Delete("DELETE  from chb_user where id=#{userIds}")
	Integer deleteUsers(Integer userIds);
	
	
	//查询所有的数据
	List<User> list();
	
	List<User> listUser(Map<String,Object> map);
	
	Integer countListUser(Map<String,Object> map);
	
	User getUser(Integer id);
	
	Integer update(User user);
	
	String selectUserName(String username);
	
	Integer deleteUser(Integer id);
 }
